package com.zjt.spring.boot.learn3.controller;

import com.zjt.spring.boot.learn3.model.dto.UserDataDto;
import com.zjt.spring.boot.learn3.model.vo.UserDataVO;
import com.zjt.spring.boot.learn3.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("api")
public class UserController {

    @Autowired
    private IUserService userService;

    /**
     * 获取用户列表
     *
     * @param dto 请求体
     * @return {@link UserDataVO}
     */
    @GetMapping("/user")
    public List<UserDataVO> getUserList(UserDataDto dto) {
        return userService.getUserList(dto);
    }

    /**
     * 通过id获取用户详情
     *
     * @param dto 请求体
     * @return {@link UserDataVO}
     */
    @GetMapping("/detailUser")
    public UserDataVO getUserDetailById(UserDataDto dto) {
        System.out.println("成功得到 id=" + dto.getId() + "的數据");
        return userService.getUserDetailById(dto);
    }

    /**
     * 新增单条用户
     *
     * @param dto 单条用户数据
     * @return {@link Boolean}
     */
    @PostMapping("/insertUser")
    public Boolean insertUser(@RequestBody UserDataDto dto) {
        return userService.insertUser(dto);
    }

    /**
     * 新增多条用户
     *
     * @param dtoList 多条用户列表
     * @return {@link Boolean}
     */
    @PostMapping("/insertUsers")
    public Boolean insertUsers(@RequestBody List<UserDataDto> dtoList) {
        return userService.insertUsers(dtoList);
    }

    /**
     * 单条用户更新
     *
     * @param dto 单条用户数据
     * @return {@link Boolean}
     */
    @PutMapping("/updUser")
    public Boolean updateUser(@RequestBody UserDataDto dto) {
        return userService.updateUser(dto);
    }

    /**
     * 通过id删除用户
     *
     * @param id 用户id
     * @return {@link Boolean}
     */
    @DeleteMapping("/delUser/{id}")
    public Boolean deleteUserById(@PathVariable Integer id) {
        System.out.println("成功刪除 id=" + id + "的數据");
        return userService.deleteUserById(id);
    }
}